Succubus Heart DEV NOTES - TODO

This document outlines planned changes/additions to Succubus Heart and their priority. Wasn't originally written for public reading so it's going to be a mess with typos, strange wording, and various other quirks. May contain "spoilers" (specifically for titles and such). Not all features listed will make it into the mod, these are just planned or are being investigated but can change at any moment.

Definitions
	Backend 	: Unseen mechanics for the backend
	Systems		: Any gameplay element that affects general system functions
	Menu		: MCM specific without any system effects
	Passives	: Related to Passive Skills
	Actives		: Related to Active Skills
	Forge		: Related to Soul Forge systems
	Soul Pets	: Related to Soul Pets systems
	misc		: Other nonsense

Milestone Markers (Incomplete)
	SUH 5.0 :
		Fix any mechanics broken by updates

Working...

		Evaluate and Optimize the OnHit code
Checking...
	
<---------------------------------->
<--------- Investigating ---------->
<---------------------------------->

Backend
Systems
	Check teleporting even when DOM is disabled bug
	Re-introducing combat/exploration spells
	Optional integrations with Sexlab Arousal
	Add "Respawn at Home" function to Death Override Mode
		Could add a "Return Point" creation to the spell to create a custom respawn point
	Milk Mod Integration patches?
	In combat seduction, when SPID is enabled (and spell effect can be trusted) apply a "disable" when animation for player registers
		Use this in-place of the calm spell to try and stop combat
	For some reason if an NPC transforms into a werewolf while in a sex act the drain kill code triggers
		Not sure I can fix this one, it is silly though
	Add compatibility with OStim
		I think my OStim install was broken for compiling script, need to re-instal and ensure everything is working properly
	Add error checking for SPID (Detect when SPID isn't working properly for Succubus Heart and suggest the player disables SPID in the settings)
		Could be added by creating a spell effect that applies to NPCs which toggles a value, then adding a check to SuH_Main's OnUpdate function
			This isn't desireable as it would affect performance, need a consistant way to find errors without affecting performance
		May need to look into functions not working properly and use that to detect when SPID isn't functioning properly, such as NPCs not being tracked properly
		Could also disable SPID by default, but the performance benefit and mod consistancy is massive so SPID is highly recommended
			Disabling by default means most players won't use it and more undefined errors may crop up like before
Menu
	Giving DOM it's own menu with additional tracking (Treat it like a separate mode similar to Soul Pets)
	Transition to Translatable strings in the MCM (Would allow others to make thier own translation of the MCM)
		MAJOR ISSUE : I use a lot of code to produce the text in the MCM, however this isn't possible with translated strings...
		Will need to test, but I think maybe each entry could be divided up into several translatable strings, but I don't think this will work easily
Passives
	Investigate "Regal Glow" Not applying proper armor rating
Actives
Forge
Soul Pets
	Becoming aggro when summoned even if there's no enemies near
		I think this is caused by follower framework mods, which are still considered incompatible, may not be able to fix.
	Soul Pet commands via crosshair (when looking at Pet) using hotkey
		Can use RegisterForCrosshairRef() and OnCrosshairRefChange(ObjectReference ref) looking for Soul Pets to allow and configure hotkey behaviour
		Could add this functionality to Pet Spell hotkey
misc
	Vigilant of St. Aggro setting untoggles when "Transforming"
	Check on animations canceling AI? (Not sure how this is SuH related but whatever)
		This is probably most relevant in Combat Seduction, overhaul may fix this when I get around to it but I suspect it's a SexLab and script lag issue


<------------------------------------------------------>
<--------- Passive / Actives / Spells Revamp ---------->
<------------------------------------------------------>

Actives :
	Actives are spells used by the player like any other
	Has 3 Tiers to unlock (Displayed as Spell, Spell+, and Spell++)

Sexual Entice :
	Attempt to seduce the target into consentual sex
	High Magicka Cost
	100% Success Rate on Soul Pets
		+ Improve Spell
			T1 : Base Spell - Touch Spell, High magicka cost
			T2 : Reduce Cost
			T3 : Becomes Ranged
		+ Improve Seduction Chance

Sexual Enrage :
	Attempt to sexuce the target into assaulting you with sex (non-consentual animation)
	High Health Cost
	100% Success Rate on Soul Pets
		+ Improve Spell
			T1 : Base Spell - Touch Spell, High Health Cost
			T2 : Reduce Cost
			T3 : Becomes Ranged
		+ Improve Seduction Chance

<------------------------------------->
<--------- Passive Priority ---------->
<------------------------------------->

<>--------- Passive Priority : Passive Effort (Update Over-Time)

Backend
Systems
Menu
Passives
Actives
Soul Pets
misc


<------------------------------------->
<--------- Highest Priority ---------->
<------------------------------------->

<>--------- Highest Priority : Effort irrelevant

Backend
Systems
	Move all timers from SuQuest into Player_Main, remove SuQuest completely
Menu
Passives
Actives
Forge
Soul Pets
misc


<---------------------------------->
<--------- High Priority ---------->
<---------------------------------->

<>--------- High Priority : High Effort

Backend
	Add follower checks to DOM (have them follow to the Succubus Realm with the player)
	Remove csCooldown Spell (replace with non-spell version using an Actor Array)
	Re-write animCalc "Start Sex" code to be less redundant, more performant, and more flexible with more validity checks
Systems
	Add Hud Element for when Sex/Fluid Bonus' are active
		Could potentially add other Hud elements if I figure this one out, but these are the most important
	Add ability to refund purchased Heart Levels
	Add combat submit state to Combat Seduction (NPCs enter Bleedout or Surrender state, losing aggro, instead of dieing, for example when in combat they will submit when reaching 0 HP)
		Make additional hits on Submit State characters cause death
		Add "activate" option to initiate interaction
	Add "fluid exhausted" function to NPCs and PC (Basically where they won't give sperm/milk after a set period of time)
	Add "Mad Soul" items that spawn a hostile version of a creature/character
	Make Spirit/Tali reset aggro after a set period of time (for people that commit the most horrid of crimes by attacking them... jerks)
	Add "effects" to ingredient items (like milk/stones/ect) [Ensure the first effect is positive]
	Replace Perks system with an "evolving titles" system (Earn points through certain types of actions like Combat, Exploration, Sexual, ect to unlock better titles with perk bonuses)
	Add/Expand ability to overwrite or lock various stats in the Status MCM
	At High Arousal - Withdrawl state (state 3) have a slight building chance to randomly charm a nearby NPC and have them assault the player
		To implement this feature the "Start Sex" code needs to be re-written
	Change Death Override Mode "remove items" funciton to use an inventory scan system before remove all to grab excluded items to re-add
	Add option to exclude items from Death Override Mode in the MCM (Use inventory item selector similar to Forge menu)
	Have Death Override Mode return items without any value (to prevent them getting lost in the shop-box)
Menu
	Make MCM not refresh when using SkillXP in the Skill Levels menu (Have it update the values instead, functions are already there anyways)
Passives
	Add Passive "Horny Thorns" - Damage attackers when hit
	Add Passive that increases Status Cap gained per-level
		Also a passive that incraess Max Status Cap per level
	Add "Seductive Aura" passive that triggers random aggressor acts
	Add passive that increases XP gained upon orgasm based on time since last orgasm
	Add ability to temporarily disable passives (can probably use "defaults" button to lock skills)
	Add passive with a chance to cast "Soul Trap" on attacked targets
	Add passive that grants bonuses based on how many titles have been aquired
	Add passive that allows drain from otherwise un-drainable sources (Specifically those already drianed completely or those immune)
	Add passive upgrade to Masochist that adds HeartXP when hit
	Add passives that give bonuses for being in certain types of acts
Actives
Forge
Soul Pets
	Separate Pet Target Spell into Pet Command Spell for pet functions and Pet Soul Replication for Soul Replication
	Add "Pets" Dungeon to Succubus Realm (essentially a jail-like area with pets and captured NPCs)
	Make 'target for options' spell a ranged spell with a visible "beam"
		Make replicating souls require a distance to target
	Add "spontanious training" option, pets will randomly assault the player with a sex act to gain XP
		Potentially make a building 'meter' where every chance the check fails it increases in likelyhood
		could also trigger on random NPCs and not just the player
		Only effect active pet to avoid issues with despawns and out-of-cell triggers
	Add a "Pet Reset" feature to the move pet option to level up pet
		This uses the Reset object reference command, move to the pet spawn, re-add and re-calculate all the stats, then move pet to player like normal
		This will help level up pets even if a player doesn't ever want to un-summon them
		Will require storing their actor value changes in addition to the reset change
	Create "Pet Status 3D Array" to track current stats and stat changes
		With this functional, Pet Drain could be re-enabled since it would be used to re-apply stat differences
		Could be used to dynamically moddify stats without losing the 'base' stats, which can re-apply on summon
	Instead of deleting pets that are desummoned, disable them and move them to the SuH holding realm
		Need to find a way to level pets naturally without re-spawning them
			Reset may work but will require checking inventory and stats to avoid losing anything they've been given like they currently do with delete
misc

<>--------- High Priority : Low Effort

Backend
	Change Checking Status Caps to a SuH_Fun Function (For easy changing)
	Add timer for Calm during act spell so it doesn't get stuck (add to advanced checks in SuQuest maybe?)
	Make an "Increase Cap" function in _Fun (so it can be used globally and keep consistency)
	Switch Regal Glow armor use "unequip" action on player
Systems
	Make draining Magicka or Stamina when an NPC has none cause Health drain instead and offer a bonus to the Stat
	Add option to disable specific drain types (disable stamina only for example)
	Combat Seduction - Make being attacked end animations
	Add SP to Skill Points option
	Make Combat Seduction Cooldown Configurable (currently defaults to 5 seconds) [Make it cap between 0 and 60 seconds]
	Add ability to disable player drain benefits
	DOM Lose Items : Check for Quest Item tag when removing items
	Remove Heart Levels "Tracking" feature to ease development (feature is annoying to maintain with changes)
	Add seduction title (probably evolving)
Menu
	Fix "Increase Rating" in Passives MCM so that it will update the "current rating" values appropriately ("Body xx : Desire xx :")
	Move optional spell options into the "Actives" menu
	Add/Expose SuH_SETgametimemod in Settings MCM
		This is for players to configure gametime scale if they use a game-time altering mod
	Add Max Sex/Fluid Bonus display to Status MCM
		Concerned this will clutter the UI, maybe add it to the highlight info?
Passives
	Add passive that generates HeartXP over time while Sex Bonus is active
	Add Caps to any passives that directly affect "Vanilla Gameplay" balance (stuff like extra armor, excessive stats/damage/ect)
	Add Passive that increases Sperm/Milk obtained when making a partner orgasm
Actives
Soul Pets
	Add option for pets to unfollow but not teleport (stays in location they are desummoned in)
	Add inventory access to soul pets
	add a name replacement when name is blank in the soul pets menu (for modded creatures that don't set name)
	Add ActorBase Search for Pet Calculations for XP/Level/Spells/ect (Similar to how add/remove works - could also make this its own function)
	Add "Make Pets Essential" for Soul Pets
	Add option to switch around Soul Pet Slots (ex. Move Slot5 to Slot3 [store 3 to temp vars, move slot5 into slot3, move temp vars into slot5])
	Add more consumable 'soul stones' that contain different pets to be slotted
	When summoning most recent pet, add notification "no valid pets found" when there are no pets listed
		For some reason the code doesn't check and display invalid when there are no pets in the pet array
Forge
	Make Soul Forge option to make Blood Chips from Health Cap (10:1) into a slider
misc

<>--------- High Priority : Unknown Effort

Backend
	remove/replace SuH_CHKcsplayerattack with more effective methods
	Add more 'optional' effects to high arousal states
Systems
Menu
Passives
Actives
Forge
Soul Pets
misc


<--------------------------------->
<--------- Low Priority ---------->
<--------------------------------->

<>--------- Low Priority : High Effort

Backend
Systems
	Have desire slow generation the more desire is currently held
	Add physical shrines to level skills in Succubus Realm (Could also create a spawnable version in the world)
	Add spell-toggle for some settings (Specifically "Allow Drain" and "Drain Always Kills")
	Make "End Act on Attack" configure based on percent health rather than direct toggle
	Add option/checking for Combat Seduction that will make NPCs only submit if your drain will kill them (rough estimate - make this option a scaler, so at 1 it'll set Health Threshold equal to Health Absorb, while 10 will set it to 10 times Health Absorb)
	Add "Cheat Page" to MCM for increasing values and adding items
	Add optional HUD elements for various status' and effects
	When males orgasm and Sperm distribution is enabled, check if the animation ejaculates internally or externally
		If internal have reciever consume sperm immediately
		If external, give sperm as an item instead
		(Could technically do the same for female breast milk using "Breast Feeding" animations)
	Add support for non-player succubus character in new sex management code
		This should be easy to accomplish even with simplified code, using the player code but replace playerRef with an actorRef
		use the new _Fun "drain from" function
		can simplify code by removing player specific contents
	Re-Implement "Make NPCs Essential During Act" in a more functional way
		This is currently disabled/broken since I don't know when (code was commented out)
	Add "Create Spawn Point" with visuals for Death Override Mode
	Add some form of indicator when High Arousal state decreases Max Status
	Add Healing Visual to Formal Beauty
	Add "Mysterious Chest" item that activates the chest remotely (Probably add as a rare item for Sepha to sell)
	Add "Remote Storage" item that activates the storage chests removetely (Add as rare item for Sepha to sell, probably multiple, 1 for each chest)
	Add Food/Drink items for Sepha to sell
	Add optional Regen options (Make regen either tied to arousal or maybe Sex Bonus, or implement more regen-based Passives like boosting base regen rather than periodic healing)
	Add "Passive Count" to Status MCM
		Can probably just add-up all passive ranks, but honestly this is a lot of work for adding future passives so this may not be implemented
			Can instead increase "Passive Count" when learning passives or use a _Fun function to calculate total passive count
Menu
	Make no-name items not appear in Soul Forge MCM
	Make MCM for passive increases preview effects of leveling them up
	Add Arousal State trigger points (percentages) to MCM
	Make Heart Level increases potentially a slider (At least status caps)
		Before doing this I could add multiple options to increase at different intervals
Passives
	Make "Fertile Hunt" Available - Drain Magicka Over Time
	Add passive that extends drain amounts
	In the MCM add wording/indicators for when a passive is capped without having to be selected
		Can probably just replace the unlock count to "Max" or something
Actives
	Spell to absorb remaining stacks from dead characters
		Make spell scale the percentage / ratio received, starting relatively low at T1 and nearing 100% at T3
Forge
	Add ability to make sets of items to be crafted 'on the fly' with Forge Self Spell (Also add spell to the player)
	Add re-sort (change slot) option for Soul Forge memory entries [similar to pets system]
	Add consumable souls that add items to Soul Forge memory (without needing to Analyze)
Soul Pets
	Way to display Soul Pets stats (probably implement a dialogue menu, will need to investicate spacing and such. Probably use the Pet Spell interface as an example)
	Add "Soul Capture" mechanic where slain characters can be "captured"
	Add "Clone" souls for NPC characters (Spirit/Tali)
	Allow Soul Pets to "gangbang" NPCs or the Player if multiple Soul Pets are in an area (make it optional in Settings)
		Could be complicated in-terms of checking for SexLab animations so I'll need plenty of validity checks for this to run
	Add "create return point" for pets to make them return to a custom home location when the player leaves the area
		Add option to return pets to home in summon menu
	Create a specific menu triggered by the Soul Pet Summon Menu Hotkey to both expand usability and remove its reliance on the Pet Self spell
	Add a script to the "pet" when summoned that manages items added to their inventory
		Too many items are added to characters dynamically by mods common with SL so may need to only count items added by player
			Default Soul Pet behaviour doesn't allow
	Add option to allow Soul Pets to be drained (setting to remove drain immunity)
	Add way to view pet stats in MCM and maybe pet spells
misc
	Add 'dummy effect' to spells and effects that don't have effects/spells (This way when people try to clean the mod, which they shouldn't, they at least won't accidentally remove required spells and effects)

<>--------- Low Priority : Low Effort

Backend
Systems
	Add drain/stack scaling based on sexlab timers
	Make SacChest increase in 'level' as fed which increases XP given
	Add option to auto-use Soul Items when acquired (like soul of experience or soul of force)
	Display notification when "Devious Partner" can't steal any more gold for that animation
	Change "Make Characters Essential during act" use a faction for checks instead of a spell effect
		This would help prevent bugs
	Add "Animal" varients for Sperm and Milk (Purely for roleplay purposes, no functional difference)
	Add "Own" or "Succubus" varients for Sperm and Milk (Purely for roleplay purposes, no functional difference)
	Add a SexLab check for oral cum already being applied when consuming sperm so it doesn't try to re-apply it
		This could remove the ability to 'stack' the effect for people with mods to do so, so may need to make some sort of stacking system so it only applies in intervals
Menu
	Add way to configure Arousal Gain (SuH_PCSarousalgainmulti)
	Organize "Balance" related settings into its own category
		This will help new players know what they can mess with if they want to change the mod's balance (or what to avoid if they want the mod's default behaviour)
Passives
	Add passive where player prefers Consentual, being victim, or being aggressor
		Reward bonuses like extra Sex Bonus or HeartXP
	Add passive that increases bonuses for high Arousal (Synergy with Seducer Passive)
	Add Heart Level or Passive that increaes Orgasm XP / Rewards
Actives
	Remove Sexual Embrace and make Sexual Entice/Enrage have a 100% success rate on sleeping targets
		This slims down the number of spells a player would need to switch through, there's no reason the other spells couldn't do what embrace does
Forge
Soul Pets
	Add check if creatures are enabled in SexLab, if not then remove "Train" option from petself spell
	Add notification for when Soul Pets enter a sex act
	Remove visual effect when using Pet Self spell (No longer needed for debug)
	In the MCM, check if there's a pet available before allowing renaming
misc

<>--------- Low Priority : Unknown Effort

Backend
Systems
Menu
Passives
Forge
Soul Pets
	Add name of followers from Soul Pets into NPC Data
misc


<------------------------------->
<--------- Concepting ---------->
<------------------------------->

Backend
Systems
	Titles Ideas
		Combat Scoring
			Include In-Combat time (estimate)
			Times hit, Times attacking
			Kill Count
		Sexual Scoring
			Count Time in-act
			Count Orgasms for self and partners
			Fluid Consumption tracking
			Partner Types
	Add passives or actives for time of day bonuses (TimeOfDayGlobalProperty.GetValue())
	Add "Arousal State Changes" - Change targets and gain rates based on different states
		(Integrations with arousal mods may be the best way to do this as it's a LOT of work...)
Menu
Passives
	Idea (Compatibility Concerns) : Make Passives activate spell effects instead of always having their own 'invisible' effects
		Example : Succubus Thorns would apply a buff when hit instead of just immediately reflecting damage
	Add passive for wearing cum
Actives
	Add "cupid's arrow" type skill where the projectile has a chance to make the target uncontrollably horny (Start sex scene if they can find a partner)
	Takes drain count since last sex act and adds attack
		(or something, just trying to find a use for this stupid detection system I added for the drain visuals)
	Add spells that are only available while sex/fluid bonus are active
Forge
Soul Pets
misc


